package com.heima.apis.article;

//import com.heima.apis.article.fallback.IArticleClientFallback;
import com.heima.apis.article.fallback.IArticleClientFallback;
import com.heima.model.article.dtos.ArticleCommentDto;
import com.heima.model.article.dtos.ArticleDto;
import com.heima.model.comment.dtos.CommentConfigDto;
import com.heima.model.common.dtos.PageResponseResult;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.wemedia.dtos.StatisticsDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.Date;

//服务名称      //步骤二：feign 远程调用失败的fallback回调，远程调用服务降级处理
@FeignClient(value = "leadnews-article",fallback = IArticleClientFallback.class)//
public interface IArticleClient {
// 步骤三：在自媒体微服务中添加类InitConfig，扫描降级代码类的包
// 客户端heima-leadnews-wemedia(调用远程服务的那一端，服务端是heima-leadnews-article，是被调用的那端)开启降级，
// 去到application.yml配置文件中配置feign: hystrix: enabled: true
    /**
     * 保存文章
     * @param dto
     * @return
     *///在wemedia微服务里WmNewsAutoScanServiceImpl注入
    // @Autowired
    // private IArticleClient articleClient;
    // 在saveAppArticle下调用了articleClient.saveArticle(articleDto)
    @PostMapping("/api/v1/article/save")
    public ResponseResult saveArticle(@RequestBody ArticleDto dto);

    /**
     *查询文章的点赞数和收藏数
     */
    @GetMapping("/api/v1/article/queryLikesAndConllections")
    ResponseResult queryLikesAndConllections(@RequestParam("wmUserId") Integer wmUserId,
                                             @RequestParam("beginDate") Date beginDate,
                                             @RequestParam("endDate") Date endDate);

    /**
     * 查询文章的统计数据
     * (分页展示文章列表，展示当前时间范围内的具体文章阅读、评论、收藏的数量。)
     */
    @PostMapping("/api/v1/article/newPage")
    PageResponseResult newPage(@RequestBody StatisticsDto dto);

    /**
     * 查询文章配置
     */
    @GetMapping("/api/v1/article/findArticleConfigByArticleId/{articleId}")
    ResponseResult findArticleConfigByArticleId(@PathVariable("articleId") Long articleId);

    /**
     * 查询文章评论的状态(评论管理分页查询，展示文章标题，评论状态，评论总量。。)
     */
    @PostMapping("/api/v1/article/findNewsComments")
    PageResponseResult findNewsComments(@RequestBody ArticleCommentDto dto);

    /**
     * 更新文章评论状态(CommentConfigDto.grtOperation()  0  关闭评论 1  开启评论)
     */
    @PostMapping("/api/v1/article/updateCommentStatus")
    ResponseResult updateCommentStatus(@RequestBody CommentConfigDto dto);
}

//
//                     |-------------------|
//                     |   heima-leadnews  |
//                     |-------------------|
//                               ^
//                               |继承
//                               |
//               |------------------------------|
//               |   heima-leadnews-feign-apis  | 定义feign接口
//               |------------------------------|
//                 ^                      ^
//                 |依赖                   |实现
//  |------------------------------|   |----------------------------|
//  |   heima-leadnews-wemedia     |   |  heima-leadnews-article    |
//  |------------------------------|   |----------------------------|


